//验证构造方法
var valicateStrategy = {

    //验证是否为空
    isEmpty: function (value, errorMsg) {
        if (value) {
            return errorMsg;
        }
    },

    //验证长度
    minLength: function (value, length, errorMsg) {
        if (value.length > length) {
            return errorMsg;
        }
    },

    //验证手机号码格式是否正确
    mobileFormate: function (value, errorMsg) {
        if (!/(^1[3|5|8][0-9]{9}$)/.test(value)) {
            return errorMsg;
        }
    }
};

//验证
var Valicator = function () {
    this.cache = [];
};

//增加验证逻辑处理 dom:获取到的节点, rule: 验证规则， 如果错误返回的错误信息
Valicator.prototype.add = function (dom, rule, errorMsg) {
    var str = rule.split(":"); //对分号进行分割
    this.cache.push(function () {
        var strategy = str.shift();
        str.unshift(dom.val()); //把获取到的input的值放到str 头部
        str.push(errorMsg); //将错误信息尾部
        return valicateStrategy[strategy].apply(dom, str);
    });
}

//调用方法，返回返回值（如果有其他样式的话返回某些属性）
Valicator.prototype.start = function () {
    var msgArr = [];
    for (let count = 0, valicateFun; valicateFun = this.cache[count++];) {
        var msg = valicateFun();
        if (msg) {
            msgArr.push(msg);
        } else {
            msgArr.push("");
        }
    }
    return msgArr;
}